﻿using System;
using Microsoft.Xna.Framework;

namespace Deferred.Library.Scene.Utilities
{
    /// <summary>
    /// 
    /// </summary>
    public class TerrainGenerationData
    {
        private Vector3 scale = Vector3.One;
        private float lowMark = 15;
        private float highMark = 180;
        private float textureScale = 48;
        private int smoothing = 0;

        /// <summary>
        /// 
        /// </summary>
        public event EventHandler OnChanged;

        /// <summary>
        /// 
        /// </summary>
        public float LowMark
        {
            get { return lowMark; }
            set { lowMark = value; if (OnChanged != null) OnChanged(this, EventArgs.Empty); }
        }
        /// <summary>
        /// 
        /// </summary>
        public float HighMark
        {
            get { return highMark; }
            set { highMark = value; if (OnChanged != null) OnChanged(this, EventArgs.Empty); }
        }
        /// <summary>
        /// 
        /// </summary>
        public float TextureScale
        {
            get { return textureScale; }
            set { textureScale = value; if (OnChanged != null) OnChanged(this, EventArgs.Empty); }
        }
        /// <summary>
        /// 
        /// </summary>
        public int Smoothing
        {
            get { return smoothing; }
            set { smoothing = value; if (OnChanged != null) OnChanged(this, EventArgs.Empty); }
        }
        /// <summary>
        /// 
        /// </summary>
        public Vector3 Scale
        {
            get { return scale; }
            set { scale = value; if (OnChanged != null) OnChanged(this, EventArgs.Empty); }
        }

        /// <summary>
        /// 
        /// </summary>
        public TerrainGenerationData()
        {
        }

        /// <summary>
        /// 
        /// </summary>
        public TerrainGenerationData(Vector3 scale, float lowMark, float highMark, float textureScale, int smoothing)
        {
            this.scale = scale;
            this.lowMark = lowMark;
            this.highMark = highMark;
            this.textureScale = textureScale;
            this.smoothing = smoothing;
        }
    }
}
